﻿
using System.Collections.Generic;
using NHibernate.Criterion;
using ProyectoActivos.Const;
using System;
using EntitiesAndMappings.Entities;

namespace ProyectoActivos.Daos
{
    public class EntidadGenericaDAO<T> : BaseDAO<T> where T : EntidadGenerica
    {
        public IList<T> ListarActivos()
        {
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    return session
                           .CreateCriteria(typeof(T))
                           .Add(Restrictions.Eq("Estado",Estado.Activo))
                           .List<T>();
                }
            }
        }

        public T FindByCodigo(String codigo)
        {
            using (var session = CreateSessionFactory().OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    return session
                           .CreateCriteria(typeof(T))
                           .Add(Restrictions.Eq("Codigo", codigo))
                           .UniqueResult<T>();
                }
            }
        }


    }
}
